package gestion.camping.controleur;

import gestion.camping.connexion.Connexion;
import gestion.camping.dao.impl.ReservationDao;
import gestion.camping.dto.Reservation;
import gestion.camping.dto.Visiteur;
import gestion.camping.vue.ViewVisiteurDetail;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JDialog;

public class VisiteurController{
	
	private List<Visiteur> listVisiteur;
	private Reservation reservation;
	private ReservationDao reservationDao = new ReservationDao(Connexion.getInstance());
	private ViewVisiteurDetail frameDetail;
	private boolean isPossibleEnregistrer;
	
	/**
	 * Constructeur du controlleur personne
	 */
	public VisiteurController(Reservation reservation){
		this.isPossibleEnregistrer = true;
		
		this.reservation = reservation;
		
		this.listVisiteur = reservationDao.findVisiteur(reservation);
	}
	
	public VisiteurController(boolean isPossibleEnregistrer){
		this.isPossibleEnregistrer = isPossibleEnregistrer;
	}
	
	/**
	 * Accesseur aux JPanel contenant le détail d'une personne
	 * @return JPanel viewDetail
	 */
	public JDialog getViewDetail(){
		
		// Si emplacement est différent de null 
		if(listVisiteur == null){
			//on est en création
			//On crée un objet vide
			listVisiteur = new ArrayList<Visiteur>();
		}
				
		//On crée la fenêtre
		frameDetail = new ViewVisiteurDetail(this);
		
		frameDetail.setVisible(true);
		
		return frameDetail;
	}

	/**
	 * Permet la gestion de l'action utilisateur Enregistrer
	 * @param personne
	 */
	public void enregistrer(List<Visiteur> listVisiteur) {
				
	
		this.listVisiteur = listVisiteur;
		
		if(isPossibleEnregistrer){
			
			this.listVisiteur = reservationDao.ajoutVisiteur(this.listVisiteur, this.reservation);
			
			frameDetail.setListVisiteur(this.listVisiteur);
		}			
				
	}

	/**
	 * Permet la gestion de l'action utilisateur Retour à liste 
	 */
	public void retour() {	
	}

	public boolean isPossibleEnregistrer() {
		return isPossibleEnregistrer;
	}

	public void setPossibleEnregistrer(boolean isPossibleEnregistrer) {
		this.isPossibleEnregistrer = isPossibleEnregistrer;
	}

	public Reservation getReservation() {
		return reservation;
	}

	public void setReservation(Reservation reservation) {
		this.reservation = reservation;
	}
	
	public List<Visiteur> getListVisiteur() {
		return listVisiteur;
	}

	public void setListVisiteur(List<Visiteur> listVisiteur) {
		this.listVisiteur = listVisiteur;
	}

	public void ajoutVisiteur(List<Visiteur> listVisiteur) {
		this.listVisiteur = listVisiteur;
		
		frameDetail.setListVisiteur(listVisiteur);
	}

	public void supprimerVisiteur(List<Visiteur> listVisiteur) {
		this.listVisiteur = listVisiteur;
		
		frameDetail.setListVisiteur(listVisiteur);
	}


	
}
